package 蓝桥真题;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class 作物杂交 {
       static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       final static int N=2010;
       static int time[]=new int[N],dist[]=new int[N],n,m,k,d;
       static class Pair{
    	      int is,at;
    	      Pair(int is,int at){
    	    	  this.is=is;
    	    	  this.at=at;
    	      }
       }
       static Map<Integer,List<Pair>>map=new HashMap();
       static boolean st[]=new boolean[N],ba[]=new boolean[N];
       
       static int dfs(int x){
    	      if(st[x])return dist[x];
    	      List<Pair> cases = map.get(x);
    	      if(cases!=null){
    	    	  for(Pair p:cases){
    	    		  int t=Math.max(time[p.is],time[p.at]);
    	    		  int dis=dfs(p.is);
    	    		  int dat=dfs(p.at);
    	    		  dist[x]=Math.min(dist[x], t+Math.max(dis, dat));
    	    	  }
    	      }
    	      st[x]=true;
    	      return dist[x];
       }
       public static void main(String[] args) throws IOException {
		      String[]ss=br.readLine().split(" ");
		      n=Integer.parseInt(ss[0]);m=Integer.parseInt(ss[1]);k=Integer.parseInt(ss[2]);d=Integer.parseInt(ss[3]);
		      ss=br.readLine().split(" ");
		      for(int i=1;i<=n;i++)
		    	  time[i]=Integer.parseInt(ss[i-1]);
		      ss=br.readLine().split(" ");
		      Arrays.fill(dist,0x3f3f3f3f);
		      for(int i=0;i<m;i++){
		    	  int u=Integer.parseInt(ss[i]);
		    	  st[u]=true;
		    	  dist[u]=0;
		      }
		    	  
		      while(k-->0){
		    	    ss=br.readLine().split(" ");
		    	    int a=Integer.parseInt(ss[0]),b=Integer.parseInt(ss[1]),c=Integer.parseInt(ss[2]);
		    	    List<Pair> v = map.get(c);
		    	    if(v==null)v=new ArrayList();
		    	    v.add(new Pair(a,b));
		    	    map.put(c, v);
		      }
		      System.out.print(dfs(d));
	}
}
